共计 1215 个字符,预计需要花费 4 分钟才能阅读完成。
提醒:本文最后更新于2024-12-12 21:41,文中所关联的信息可能已发生改变,请知悉!
初次使用docker并尝试搭建邮件服务,过了一段时间发现磁盘空间不足,通过df -h指令发现 /var/lib/docker/overlay2/{id}/merged 这个目录占了近20g空间,发现了是日志文件没作出限制记录了19g,网上搜索了一番才找出解决方法。
仅清理的办法
- 找出日志文件的脚本
在root文件下创建一个名为 docker_log_size.sh 的文件并编辑输入以下内容
#!/bin/sh
echo "======== docker containers logs file size ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
ls -lh $log
done
- 给脚本赋权并运行
chmod +x docker_log_size.sh
./docker_log_size.sh
- 清理日志文件的脚本
在root文件下创建一个名为 clean_docker_log.sh 的文件并编辑输入以下内容
#!/bin/sh
echo "======== start clean docker containers logs ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo "clean logs : $log"
cat /dev/null > $log
done
echo "======== end clean docker containers logs ========"
- 给脚本赋权并运行
chmod +x clean_docker_log.sh
./clean_docker_log.sh
永久解决的方法
- 全局设置
- 新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:
# vim /etc/docker/daemon.json
{
"insecure-registries" : [
"registry.docker-cn.com",
"docker.mirrors.ustc.edu.cn"
],
"debug" : true,
"experimental" : true,
"storage-driver": "overlay2"
}
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"1"
}
}
max-size=500m,意味着一个容器日志大小上限是500M,
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。
- 重启docker守护进程
systemctl daemon-reload
systemctl restart docker
至此日志文件将会减小,注意切勿手动删除,手动删除会遇到文件删除了但空间并未减小的问题。
正文完
发表至: 云服务器教程
2024-05-09